RAID (Redundant Array of Independent Disks) is a storage technology that combines a set of storage devices into a single logical storage unit for the purpose of providing improved storage fault tolerance and enhanced performance. Data and redundancy information are distributed over a group of storage devices (RAID group), to allow reconstruction of lost data in the event of storage device failure. Distribution of data and redundancy information across the RAID group storage devices is made in one of several protection schemes referred to as “RAID levels”. A preferred RAID level is selected depending on the required level of redundancy, performance, and space utilization.
Under common RAID schemes, each storage devices is partitioned into equal size segments. A set of segments which span some or all of the storage devices (but no more than a segment per storage devices) constitute a “RAID stripe”. Depending on the specific RAID level which is implemented, each such stripe consists of one or more data segments, and a given number of syndromes (otherwise known as “parity”) segments. Furthermore, the syndrome segments, which are written to in an equal-to or higher frequency than the data segments (depending on the RAID level), are commonly distributed in an even manner across the system storage devices, to facilitate load balancing amongst the system storage devices.
Level 6 RAID enables continuous execution of read and write operations in the event of up to two concurrent storage device failures. RAID 6 is implemented by computing two syndromes (typically referred to as p and q) segments for N data segments in each RAID stripe. This first syndrome segment (p) is commonly computed by a simple XOR operation on the data segments across the stripes. The second syndrome segment (q), requires more complicated computation based on field theory.